package com.dandelion.framework.common.util;

import com.dandelion.business.entity.vo.login.resp.AopToken;

/**
 * 用户工具类
 *
 * @author 77088
 * @date 2022/02/16
 */
public abstract class UserUtils {

    /**
     * 线程变量，存放user实体类信息，即使是静态的与其他线程也是隔离的
     */
    private static final ThreadLocal<AopToken> USER_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 从当前线程变量中获取用户信息
     *
     * @return
     */
    public static AopToken getToken() {
        AopToken user = USER_THREAD_LOCAL.get();
        return user;
    }

    /**
     * 为当前的线程变量赋值上用户信息
     *
     * @param user
     */
    public static void setToken(AopToken user) {
        USER_THREAD_LOCAL.set(user);
    }

    /**
     * 清除线程变量
     */
    public static void removeToken() {
        USER_THREAD_LOCAL.remove();
    }
}
